package lambda;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.function.Predicate;

/**
 * @author yangwenqi
 * @decs TODO
 * @date 2025/5/6
 * 集合信息筛选  String[] array = { "张三,男", "李四,女", "王二麻子,女" };
 * 数组当中有多条“姓名+性别”的信息如下，请通过Predicate接口的拼装将符合要求的字符串筛选到集合ArrayList中，
 * 需要同时满足两个条件： and与
 * 1.必须为女生
 * 2.姓名为4个字
 */
public class PredicateDemo {
    public static void main(String[] args) {
        String[] array = {"张三,男", "李四,女", "王二麻子,女"};
        ArrayList<String> result =
                testAnd(new Predicate<String>() {
                    @Override
                    public boolean test(String s) {
                        String[] str = s.split(",");
                        return str[0].length()==4;
                    }
                },new Predicate<String>() {
                    @Override
                    public boolean test(String s) {
                        String[] str = s.split(",");
                        return str[1].equals("女");
                    }
                },array);
        System.out.println(result);
    }

    public static ArrayList<String> testAnd(Predicate<String> p1, Predicate<String> p2, String[] arr) {
        ArrayList<String> list = new ArrayList<>();
        Arrays.stream(arr).forEach(str -> {
            if (p1.and(p2).test(str)) {
                list.add(str);
            }
        });
        return list;
    }
}
